//
//  QBMainViewController.swift
//  Wei91BoiOS
//
//  Created by bing on 16/3/19.
//  Copyright © 2016年 bing. All rights reserved.
//

import UIKit

import SVProgressHUD

class QBMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 自定义tabBar，添加加号按钮的tabBar是只读的，不能直接使用=赋值，使用KVC来赋值
        let newTabBar = QBMainTabBar()
    
        self.setValue(newTabBar, forKey: "tabBar")
        
        // 设置闭包
        newTabBar.composeButtonCallback = { [weak self]() -> () in
            
            // 判断用户是否登录
            if !QBUserAccountViewModel.sharedInstance.userLogin {
                
                SVProgressHUD.showErrorWithStatus("没有登录不能发微博")
                
                return
            }
            
            // 根据字符串来创建类，swift中通过类型来创建对象需要添加 产品.类名
            let productName = NSBundle.mainBundle().infoDictionary?["CFBundleName"] as? String ?? ""
            
            let cls = NSClassFromString("\(productName).QBComposeViewController") as! UIViewController.Type
            
            let composeVC = cls.init()
            
            self?.presentViewController(UINavigationController(rootViewController: composeVC), animated: true, completion: nil)
        }

        // 创建所有的控制器
        addChildViewControllers()
    }
    
    /// 创建所有的控制器
    func addChildViewControllers() {
        // 设置tabBar控制的自控制器
        // 首页
        let homeVc = QBHomeViewController()
        addChildViewController(homeVc, title: "首页", imageName: "tabbar_home")
        
        // 消息
        let messageVc = QBMessageViewController()
        addChildViewController(messageVc, title: "消息", imageName: "tabbar_message_center")
        
        // 发现
        let discoverVc = QBDiscoverViewController()
        addChildViewController(discoverVc, title: "发现", imageName: "tabbar_discover")
        
        // 我
        let profileVc = QBProfileViewController()
        profileVc.title = "我"
        addChildViewController(profileVc, title: "我", imageName: "tabbar_profile")
    }
    
    /**
     添加为tabBar的子控制器
     - parameter controller: 控制器
     - parameter title:      标题
     - parameter imageName:  图片名称
     */
    func addChildViewController(controller: UIViewController, title: String, imageName:String) {
        // 设置标题
        controller.title = title
        // 设置普通图片
        controller.tabBarItem.image = UIImage(named: imageName)
        
        // 拼接图片名称 tabbar_home_highlighted
        let hightedImageName = imageName + "_highlighted"
        // 设置高量图片，默认情况下选中图片会被渲染成蓝色的要想使用图片原来的颜色
        controller.tabBarItem.selectedImage = UIImage(named: hightedImageName)?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        
        // 设置item文字颜色
        controller.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.orangeColor()], forState: UIControlState.Selected)
        
        // 添加自子控制器
        addChildViewController(UINavigationController(rootViewController: controller))
    }

}
